所謂心意要明確表達讓對方知道,繼昨天我們已經能寫出很大段的句子了,讓我們要把它講出來。
Python有gTTS是Google Translate's text-to-speech的library,範例如下,非常簡單:
from gtts import gTTS
tts = gTTS('hello')
tts.save('hello.mp3')
存成mp3檔案我們再把它打開,就會有大家常聽到的google女士音,也可以講各國語言,包含中文、日文等,基本就是google翻譯上有的都有,語系就在lang設定,例如中文,而中文有分zh-tw和zh-cn,聲線有些微差異,但我簡單測試輸入文字是繁體或簡體並沒有影響:
tts = gTTS(text='張無忌見三名老僧在片刻間連斃崑崙派四位高手', lang='zh-tw')
tts.save('try1.mp3')
tts = gTTS(text='张无忌见三名老僧在片刻间连毙昆仑派四位高手', lang='zh-cn')
tts.save('try2.mp3')
但這結果是mp3,如果要即時講出來,我查大家一致推薦用pygame的mixer,參考這篇整合範例如下:
import time
from pygame import mixer
import tempfile
def speak(sentence, lang):
with tempfile.NamedTemporaryFile(delete=True) as fp:
tts=gTTS(text=sentence, lang=lang)
tts.save('{}.mp3'.format(fp.name))
mixer.init()
mixer.music.load('{}.mp3'.format(fp.name))
mixer.music.play(1)
speak('はじめまして', 'ja')
time.sleep(2)
speak('Hello World!', 'en')
time.sleep(1)
speak('機油好難喝', 'zh-tw')
time.sleep(3)
speak('bonjour', 'fr')
time.sleep(1)
speak('Guten Tag', 'de')
time.sleep(1)
都是各國的google女士。沒有選項可以調語音包是比較可惜的,例如男生或是小孩之類的。另外有slow這個參數可以放慢語速,但我覺得差異也不大,並不是到google翻譯上"練習發音"那種等級的。